메모리 주소
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
메모리 주소는 컴퓨터가 메모리 내의 특정 위치를 식별하는 데 사용되는 식별자이다. 메모리 주소는 물리 주소와 논리 주소로 나뉘며, 물리 주소는 RAM의 실제 위치를, 논리 주소는 가상 메모리 환경에서 사용되는 주소이다. 주소 공간은 마이크로프로세서가 접근할 수 있는 메모리의 범위를 나타내며, 8비트, 16비트, 32비트, 64비트 등 다양한 크기로 진화해왔다. 주소 지정 단위는 바이트 단위가 일반적이며, 워드 단위의 주소 지정 방식도 존재한다. 메모리 모델은 플랫 메모리 모델, 세그먼트 메모리 모델, 하버드 아키텍처 등이 있으며, 주소 지정 방식은 절대 주소, 상대 주소 등 다양한 방법을 포함한다. 응용 프로그램은 코드, 데이터, 스택, 힙 등 다양한 메모리 영역을 가지며, 메모리 뱅크는 64KB를 초과하는 메모리 사용을 위해 도입되었다.
더 읽어볼만한 페이지
- 식별자 - 아카이벌 리소스 키
아카이벌 리소스 키(ARK)는 디지털, 물리적, 추상적 자원의 영구적인 식별을 위한 체계로, 분산된 웹 환경에서 관리 주체의 약속을 통해 객체의 보존과 접근성을 제공하며, ARK Alliance가 국제적인 사용을 장려하고 한국에서도 활용된다. - 식별자 - 바코드
바코드는 다양한 폭의 막대와 공백 조합으로 정보를 나타내는 기호로, 상품 식별, 재고 관리 등에 사용되며 1차원과 2차원 바코드가 존재하고 바코드 스캐너로 판독되어 산업 효율성을 높인다. - 컴퓨터 메모리 - 플래시 메모리
플래시 메모리는 전기적으로 데이터의 쓰기 및 삭제가 가능한 비휘발성 메모리 기술로, 마스오카 후지오 박사가 발명하여 카메라 플래시와 유사한 소거 방식으로 인해 명명되었으며, NOR형과 NAND형으로 나뉘어 각기 다른 분야에 적용된다. - 컴퓨터 메모리 - 메모리 계층 구조
메모리 계층 구조는 CPU 데이터 접근 속도 향상을 위해 레지스터, 캐시, RAM, 보조 기억 장치 등으로 구성되며, 속도, 용량, 비용이 다른 계층들을 통해 효율적인 메모리 관리를 가능하게 한다.
메모리 주소 | |
---|---|
메모리 주소 | |
정의 | 컴퓨터에서 데이터나 명령어가 저장된 특정 메모리 위치를 식별하는 주소 |
표현 방식 | 일반적으로 16진수로 표현됨 |
접근 방법 | 직접 접근: 임의 접근 메모리(RAM) 등 순차 접근: 자기 테이프 등 |
역할 | 중앙 처리 장치(CPU)가 특정 메모리 위치에 저장된 데이터에 접근하거나 명령어를 실행하는 데 사용 |
주소 지정 방식 | |
직접 주소 지정 방식 | 명령어 내에 실제 메모리 주소를 포함 |
간접 주소 지정 방식 | 명령어 내에 메모리 주소를 가리키는 다른 메모리 주소를 포함 |
상대 주소 지정 방식 | 현재 프로그램 카운터 값을 기준으로 상대적인 주소를 계산 |
주소 공간 | |
개념 | 프로세스가 접근할 수 있는 메모리 주소의 범위 |
크기 | CPU가 처리할 수 있는 최대 메모리 용량을 결정 |
종류 | 물리적 주소 공간: 실제 메모리 칩의 주소 범위 논리적 주소 공간: 프로세스에 할당된 가상 메모리 주소 범위 |
주소 변환 | |
필요성 | 논리적 주소를 물리적 주소로 변환해야 실제 메모리 위치에 접근 가능 |
방법 | 메모리 관리 장치(Memory Management Unit, MMU)를 통해 수행 |
메모리 주소 레지스터 (MAR) | |
역할 | CPU가 접근하려는 메모리 주소를 저장하는 레지스터 |
작동 방식 | MAR에 저장된 주소를 통해 메모리 위치를 지정하고, 해당 위치에서 데이터를 읽거나 씀 |
주소 표현 | |
부호 없는 정수 | 메모리 주소는 음수가 될 수 없으므로 일반적으로 부호 없는 정수로 표현됨 |
크기 | CPU의 워드 크기에 따라 결정됨 (예: 32비트 CPU는 2^32개의 주소를 표현 가능) |
2. 메모리 주소의 종류
메모리 주소는 사용 방식과 관점에 따라 크게 두 가지 종류로 나눌 수 있다. 하나는 물리 주소(Physical Addresseng)이고, 다른 하나는 논리 주소(Logical Addresseng)이다. 물리 주소는 주 기억 장치(메인 메모리)의 실제 하드웨어 위치를 가리키는 주소이며, CPU나 다른 장치가 메모리에 직접 접근할 때 사용된다. 반면, 논리 주소는 컴퓨터 프로그램이 사용하는 가상의 주소로, 실제 메모리 접근 시에는 메모리 관리 장치(MMU) 등을 통해 물리 주소로 변환된다.
2. 1. 물리 주소 (Physical Address)
디지털 컴퓨터의 주 기억 장치(메인 메모리)는 여러 개의 '''메모리 위치'''(memory location)로 구성되며, 각각의 위치는 고유한 물리 주소(physical address)를 가진다. CPU나 다른 장치들은 이 물리 주소를 사용하여 특정 메모리 위치에 접근한다.일반적으로 시스템 소프트웨어, 예를 들어 BIOS, 운영 체제, 그리고 메모리 검사기와 같은 특수한 유틸리티 프로그램만이 기계어 명령의 피연산자나 레지스터를 통해 물리 메모리에 직접 접근할 수 있다. 이러한 접근을 위해 CPU는 메모리 컨트롤러라는 하드웨어 장치와 통신한다.
메모리 컨트롤러는 메모리 버스나 시스템 버스, 또는 경우에 따라 분리된 제어 버스, 주소 버스, 데이터 버스를 사용하여 메모리 접근을 관리하고 프로그램의 명령을 실행한다. 이 버스들은 여러 개의 병렬 통신 회선으로 이루어져 있으며, 각 회선은 하나의 이진 숫자(비트)를 전달한다. 버스의 폭(회선 수)은 컴퓨터 시스템마다 다르며, 이는 주소 지정 가능한 메모리 단위의 수와 각 단위당 비트 수를 결정하는 중요한 요소가 된다.
2. 2. 논리 주소 (Logical Address)
컴퓨터 프로그램은 기계어를 실행하고 데이터를 저장하거나 검색하기 위해 메모리 주소를 사용한다. 초기의 컴퓨터에서는 프로그램이 사용하는 주소인 논리 주소와 하드웨어 메모리의 실제 위치인 물리 주소가 동일했다.그러나 가상 메모리 개념이 도입된 이후, 대부분의 응용 프로그램은 더 이상 물리 주소를 직접 다루지 않는다. 대신 '''논리 주소'''(logical address) 또는 가상 주소(virtual address)라고 불리는 주소를 사용한다. 이 논리 주소는 컴퓨터의 메모리 관리 장치(MMU)와 운영 체제의 메모리 매핑 기능을 통해 실제 물리 주소로 변환되어 사용된다. 즉, 가상 메모리 시스템에서는 프로그램이 인식하는 논리 주소와 실제 메모리상의 물리 주소가 반드시 일치하지는 않는다.
3. 주소 공간 (Address Space)
마이크로프로세서가 메모리에 접근할 때 사용할 수 있는 주소의 범위를 주소 공간이라고 한다. 마이크로프로세서는 무한한 주소를 다룰 수 없으므로, 정해진 비트 수의 주소 버스를 사용하여 메모리 위치를 식별하며, 이 주소 버스의 비트 수가 주소 공간의 크기를 결정한다. 마이크로프로세서는 초기의 4비트부터 시작하여 8비트, 16비트, 32비트를 거쳐 현재의 64비트까지 발전해 왔으며, 이에 따라 주소 공간도 점차 확장되었다. 각 마이크로프로세서는 고유한 주소 공간을 가지며, 때로는 하나의 프로세서가 여러 개의 독립적인 주소 공간을 복합적으로 사용하기도 한다.
현대의 컴퓨터는 대부분 메모리 내의 개별 바이트마다 주소를 할당하는 바이트 주소 지정 방식을 사용한다. 따라서 1바이트보다 큰 데이터는 연속된 주소를 가진 여러 바이트에 걸쳐 저장된다. 하지만 과거의 일부 컴퓨터나 특정 시스템에서는 워드(컴퓨터가 한 번에 처리하는 데이터 단위)를 기본 단위로 주소를 지정하는 워드 주소 지정 방식을 사용하기도 했다. 예를 들어, 16비트 워드를 사용하는 데이터 제너럴 노바나 텍사스 인스트루먼트의 TMS9900 같은 프로세서는 2바이트를 하나의 주소 단위로 취급했다.
주소 공간의 크기는 주소 버스의 비트 수에 따라 기하급수적으로 증가한다. n비트의 주소 버스를 가진 시스템은 2n개의 고유한 메모리 주소를 식별할 수 있다. 예를 들어, 20비트 주소 버스를 사용했던 인텔 8086은 220개, 즉 1,048,576개의 메모리 위치(1MiB)를 주소 지정할 수 있었고, 32비트 주소 버스를 사용하는 인텔 80386과 같은 프로세서는 232개, 즉 4,294,967,296개의 메모리 위치(4GiB)를 주소 지정할 수 있었다. 이후 64비트로 확장되면서 주소 공간은 더욱 커졌다.
과거에는 십진수 숫자를 사용하여 메모리 주소를 지정하는 컴퓨터(IBM 1620 등)도 존재했다. 또한, 메모리 관리의 복잡성이 증가하면서 메모리 관리 장치(MMU)와 같은 기술이 도입되어 프로그램이 사용하는 논리주소를 실제 하드웨어의 물리주소로 변환하고 메모리 접근 권한을 관리하는 등 효율적인 메모리 활용을 돕는다.
3. 1. 8비트 마이크로프로세서의 주소 공간
초기 마이크로프로세서는 4비트에서 시작하여 점차 발전하면서 주소 공간도 함께 확대되었다. 초기의 8비트 마이크로프로세서는 대부분 16비트의 주소 버스를 사용하여 메모리 주소를 지정했다. 이는 216개, 즉 65,536개의 메모리 위치를 구분할 수 있으며, 64 KiB의 메모리 용량에 해당한다. 대표적인 예로는 인텔 8080 계열과 모토로라 6800 계열이 있으며, 이 외에도 8085, Z-80, 6809, 6502 등이 이러한 16비트 주소 공간을 사용했다.하지만 8비트 마이크로프로세서가 MCU(Microcontroller Unit)로 발전하면서 주소 공간 구조가 다양해졌다. 예를 들어, 8051과 같은 일부 MCU는 8비트 주소 공간과 16비트 주소 공간을 분리하여 사용하기도 한다. 이는 하나의 마이크로프로세서 내에서 두 가지 다른 크기의 주소 공간을 동시에 활용하는 방식으로, 이를 지원하기 위해 기계어 수준에서 두 주소 공간을 구분하여 처리할 수 있도록 설계되었다. 이처럼 MCU는 특정 용도에 맞춰 다양한 주소 체계를 사용하는 경우가 많아 일반화하기는 어렵고, 개발 시 해당 MCU의 데이터시트를 확인하는 것이 중요하다.
3. 2. 32비트 마이크로프로세서의 주소 공간
32비트 마이크로프로세서로 진화하면서 32비트의 주소 공간이 일반화되었다. 거의 모든 32비트 CPU는 32비트 주소 공간을 갖는데, 대표적으로 인텔 x86 (IA-32), 68020, ARM 등이 있다.32비트 주소 버스는 232개, 즉 4,294,967,296개의 메모리 로케이션을 구분할 수 있으며, 이는 4 GiB의 주소 공간에 해당한다.
많은 32비트 시스템에서는 효율적인 메모리 관리를 위해 메모리 관리 장치 (MMU)를 사용한다. MMU는 운영 체제와 함께 작동하여 프로그램이 사용하는 논리주소를 실제 메모리의 물리주소로 변환해주는 역할을 함으로써, 메모리 자원을 효과적으로 관리하고 보호하는 기능을 제공한다.
3. 3. 64비트 마이크로프로세서의 주소 공간
메모리 주소 지정의 효율성은 주소 버스의 비트 크기에 따라 결정된다. 주소 버스에 사용되는 비트 수가 많을수록 컴퓨터가 사용할 수 있는 메모리 주소 공간이 커진다.예를 들어, 20비트 주소 버스를 가진 인텔 8086과 같은 마이크로프로세서는 220개의 메모리 위치, 즉 1 MiB의 메모리를 주소 지정할 수 있다. 인텔 80386과 같이 32비트 주소 버스를 사용하는 프로세서는 232개의 메모리 위치, 즉 4 GiB의 주소 공간을 가진다.
이러한 원리를 확장하면, 64비트 주소 버스를 사용하는 마이크로프로세서는 이론적으로 264개의 메모리 위치를 주소 지정할 수 있다. 이는 약 16 엑스비바이트 (EiB)에 해당하는 매우 큰 메모리 공간이다.
4. 주소 지정 단위 (Unit of Address Resolution)
대부분의 현대 컴퓨터는 ''바이트 어드레싱''(Byte addressing) 방식을 사용한다. 이 방식에서 각 메모리 주소는 저장 공간의 단일 바이트 (8비트)를 식별한다. 만약 데이터가 1바이트보다 크다면, 해당 데이터는 연속된 주소들에 걸쳐 저장된다.
반면, 최소 주소 지정 단위가 프로세서의 워드(word) 크기와 동일한 ''워드 어드레싱''(Word addressing) 방식을 사용하는 컴퓨터도 존재한다. 예를 들어, 데이터 제너럴 노바 미니컴퓨터, 텍사스 인스트루먼트 TMS9900 및 내셔널 세미컨덕터 IMP-16 마이크로컴퓨터는 16비트 워드를 사용했다. 또한, 많은 36비트 메인프레임 컴퓨터 (예: PDP-10)는 18비트 워드 어드레싱을 사용했으며, 바이트 어드레싱은 지원하지 않았다. 이들 컴퓨터는 218개의 36비트 워드, 즉 약 1MiB에 해당하는 저장 공간을 주소 지정할 수 있었다.
메모리 주소 지정의 효율성은 주소에 사용되는 주소 버스의 비트 수에 따라 결정된다. 더 많은 비트를 사용할수록 컴퓨터가 접근할 수 있는 메모리 주소의 개수가 늘어난다. 예를 들어, 20비트 주소 버스를 가진 8비트 바이트 어드레싱 컴퓨터 (예: 인텔 8086)는 220개(1,048,576개)의 메모리 위치, 즉 1MiB의 메모리를 주소 지정할 수 있다. 반면, 32비트 주소 버스를 가진 컴퓨터 (예: 인텔 80386)는 232개(4,294,967,296개)의 위치, 즉 4GiB의 주소 공간을 다룰 수 있다. 이와 비교하여, 18비트 주소 버스를 가진 36비트 워드 어드레싱 컴퓨터는 218개(262,144개)의 36비트 워드 위치를 주소 지정할 수 있는데, 이는 총 9,437,184비트에 해당하며, 8비트 바이트로 환산하면 1,179,648바이트(1152KiB 또는 1.125MiB)로, 인텔 8086보다 약간 더 큰 용량이다.
일부 구형 컴퓨터(십진 컴퓨터)는 십진법 숫자를 직접 주소로 사용하는 방식(Decimal addressing)을 사용하기도 했다. 예를 들어, IBM 1620의 자기 코어 메모리는 각 주소가 하나의 6비트 이진화 십진법(BCD) 숫자를 나타냈다. 이 6비트는 패리티 비트 1개, 플래그 비트 1개, 그리고 숫자 비트 4개로 구성되었다. IBM 1620은 5자리의 십진수 주소를 사용했으므로, 이론적으로 가능한 가장 높은 주소는 99,999였다. 실제로는 기본 CPU가 20,000개의 메모리 위치를 지원했으며, 선택적으로 외부 메모리 유닛을 최대 2개까지 추가할 수 있었다. 각 외부 유닛은 20,000개의 주소를 지원했으므로, 총 60,000개(주소 범위 00000–59999)의 메모리 위치를 가질 수 있었다.
5. 워드 크기 vs. 주소 크기 (Word Size vs. Address Size)
워드 크기는 CPU가 한 번에 처리할 수 있는 비트 수를 나타내는 컴퓨터 아키텍처의 특징이다. 임베디드 시스템을 포함한 현대 프로세서는 일반적으로 8, 16, 24, 32 또는 64비트의 워드 크기를 가지며, 현재 대부분의 범용 컴퓨터는 32비트 또는 64비트를 사용한다. 역사적으로는 8, 9, 10, 12, 18, 24, 36, 39, 40, 48, 60비트 등 다양한 크기가 사용되었다.
현대 컴퓨터의 "워드 크기"를 언급할 때는, 해당 컴퓨터의 주소 공간 크기를 설명하는 경우도 많다. 예를 들어, "32비트"라고 하는 컴퓨터는 일반적으로 32비트 메모리 주소를 사용하며, 바이트 주소 지정이 가능한 32비트 컴퓨터는 232 = 4,294,967,296 바이트, 즉 4GiB의 메모리를 주소 지정할 수 있다. 이를 통해 하나의 메모리 주소를 하나의 워드에 효율적으로 저장할 수 있다.
그러나 이것이 항상 적용되는 것은 아니다. 컴퓨터는 워드 크기보다 크거나 작은 메모리 주소를 가질 수 있다. 예를 들어, MOS 테크놀로지 6502와 같은 많은 8비트 프로세서는 16비트 주소를 지원했는데, 만약 그렇지 않았다면 256 바이트의 메모리 주소 지정으로 제한되었을 것이다. 16비트 인텔 8088과 인텔 8086은 세그멘테이션을 통해 20비트 주소를 지원하여, 64KiB가 아닌 1MiB의 메모리에 접근할 수 있었다. 펜티엄 프로 이후의 모든 인텔 펜티엄 프로세서는 물리 주소 확장(PAE) 기능을 포함하여, 32비트 가상 주소를 36비트 물리 주소에 매핑하는 것을 지원한다.
이론적으로, 현대의 바이트 주소 지정이 가능한 64비트 컴퓨터는 264 바이트 (16EiB)를 주소 지정할 수 있다. 하지만 실제 메모리 양은 CPU, 메모리 컨트롤러, 또는 인쇄 회로 기판 설계 (예: 물리 메모리 커넥터 수 또는 납땜된 메모리 양) 등에 의해 제한된다.
6. 메모리 모델 (Memory Model)
메모리 모델은 컴퓨터 프로그램이 메모리에 접근하는 방식에 대한 추상적인 개념이다. 많은 프로그래머는 코드 공간, 데이터 공간, 물리 메모리, 가상 메모리 등의 구분이 없는 단일한 주소 공간처럼 메모리를 다루는 플랫 메모리 모델(flat memory model영어)을 선호한다. 이 모델에서는 같은 주소값을 가진 포인터가 RAM 상에서 항상 동일한 바이트를 가리킨다.
하지만 모든 시스템이 이러한 모델을 따르는 것은 아니다. 예를 들어, 초기의 많은 컴퓨터나 하버드 아키텍처를 사용하는 시스템은 프로그램과 데이터를 위한 메모리 공간을 물리적으로 분리했다. 또한, 현대의 일부 DSP는 성능 향상을 위해 여러 개의 독립된 메모리 영역(예: 프로그램용, 데이터용, 계수용)을 가지기도 한다.
현대 컴퓨터 시스템에서는 응용 프로그램이 직접 물리 주소를 다루기보다는 논리 주소(가상 주소)를 사용하며, 이는 컴퓨터의 메모리 관리 장치(MMU)와 운영 체제에 의해 실제 물리 주소로 변환된다. 이러한 가상 메모리 시스템 역시 메모리 모델의 중요한 부분을 이룬다.
6. 1. 플랫 메모리 모델 (Flat Memory Model)
많은 프로그래머는 코드 공간과 데이터 공간, 물리 메모리와 가상 메모리의 구분이 없는 방식으로 메모리에 접근하는 것을 선호한다. 즉, 숫자 값이 같은 포인터는 RAM 상에서 정확히 동일한 바이트를 가리키는 플랫 메모리 모델을 선호한다.그러나 많은 초기 컴퓨터는 이러한 플랫 메모리 모델을 지원하지 않았다. 특히, 하버드 아키텍처를 사용하는 기기는 프로그램 저장 공간과 데이터 저장 공간을 완전히 분리해야 했다.
현대의 많은 DSP (예: 모토로라 56000) 역시 여러 개의 독립된 저장 영역을 가지는 경우가 있다. 예를 들어 프로그램 저장 공간, 계수 저장 공간, 데이터 저장 공간으로 나눌 수 있다. 일부 명령어는 이 세 영역 모두에서 동시에 데이터를 가져와 처리 속도를 높인다. 만약 저장 영역이 더 적다면, 총 저장 용량이 같더라도 해당 명령어의 실행 속도는 느려질 수 있다.
6. 2. 세그먼트 메모리 모델 (Segmented Memory Model)
초기 x86 프로세서에서 사용된 메모리 관리 방식으로, 메모리 주소를 메모리 세그먼트와 해당 세그먼트 내의 오프셋이라는 두 숫자의 조합을 사용하여 지정하는 방식이다.일부 세그먼트는 암묵적으로 특정 용도로 취급되었는데, 예를 들어 명령어를 저장하는 '''코드 세그먼트''', 스택으로 사용되는 '''스택 세그먼트''', 그리고 일반적인 데이터를 저장하는 '''데이터 세그먼트''' 등이 있었다. 그러나 이러한 용도 구분은 관례적인 것이며, 세그먼트 자체에 용도를 강제하는 별도의 메모리 보호 기능은 없었다.
이후 등장한 플랫 메모리 모델에서는 모든 세그먼트(세그먼트 레지스터)를 일반적으로 0으로 설정하고, 오프셋만을 가변적으로 사용하여 메모리 주소를 지정하는 방식으로 변화했다.
6. 3. 하버드 아키텍처 (Harvard Architecture)
하버드 아키텍처는 프로그램 저장 공간과 데이터 저장 공간을 물리적으로 완전히 분리하는 컴퓨터 구조이다. 많은 초기 컴퓨터는 이러한 구조를 채택했는데, 이는 코드와 데이터를 구분 없이 동일한 메모리 공간에서 다루는 flat memory model|플랫 메모리 모델영어과는 다르다.현대의 DSP(Digital Signal Processor) 중 다수가 하버드 아키텍처를 사용한다. 예를 들어 모토로라 56000과 같은 DSP는 프로그램 저장 공간, 계수 저장 공간, 데이터 저장 공간이라는 세 개의 독립적인 저장 영역을 가지기도 한다. 일부 명령어는 이 세 영역에서 동시에 데이터를 가져올 수 있는데, 이는 저장 영역이 분리되지 않은 경우보다 명령어 실행 속도를 높일 수 있다. 즉, 총 메모리 용량이 같더라도 여러 개의 분리된 저장 영역을 가지는 것이 성능 향상에 유리할 수 있다.
7. 메모리 뱅크 (Memory Bank)
많은 8비트 마이크로프로세서는 16비트의 주소 공간을 사용한다. 따라서 최대로 사용할 수 있는 메모리 공간은 16비트 주소 체계에 따라 64KB (216 바이트)로 제한된다. 그러나 초기 8비트 시스템이 점차 발전하고 복잡해지면서 더 많은 메모리 용량이 필요하게 되었다. 이러한 64KB의 한계를 넘어서기 위해 메모리 뱅크(Memory Bank)라는 개념이 도입되었다. 이 방식은 프로그램이 특정 뱅크를 선택하고, 선택된 뱅크의 메모리 영역에 접근하는 방식으로 동작하여 64KB 이상의 메모리를 사용할 수 있도록 지원한다.
8. 주소 지정 방식 (Addressing Mode)
컴퓨터 프로그램은 메모리 주소를 사용하여 기계어를 실행하고 데이터를 저장하거나 불러온다. 프로그램이 메모리 주소에 접근하는 방식에는 여러 가지가 있다.
가장 기본적인 방식은 명시적으로 주어진 주소, 즉 '''절대 주소'''를 사용하는 것이다. 이는 저수준 언어에서 주로 사용되는 용어이며, 고수준 언어에서는 포인터 데이터 형식을 통해 구현된다.
다른 방식으로는 특정 위치(베이스 주소)를 기준으로 상대적인 위치를 나타내는 상대 주소를 사용하는 것이다. 이를 통해 기준 주소로부터 얼마나 떨어져 있는지를 계산하여 실제 주소를 찾는다. 이 외에도 다양한 간접적인 어드레싱 모드가 존재한다.
가상 메모리 시스템에서는 프로그램이 사용하는 논리 주소(또는 가상 주소)와 실제 하드웨어의 물리 주소가 직접 일치하지 않는다. 프로그램은 논리 주소를 사용하고, 컴퓨터의 메모리 관리 장치(MMU)와 운영 체제의 메모리 매핑 기능을 통해 이 논리 주소가 실제 물리 주소로 변환된다. 이 과정에서 여러 단계의 간접 참조가 추가될 수 있다.
9. 응용 프로그램의 주소 공간 (Address Space in Application Programming)
가상 메모리가 도입된 이후, 대부분의 응용 프로그램은 물리 주소를 직접 다루지 않는다. 대신 논리 주소 또는 가상 주소를 사용하며, 이는 컴퓨터의 메모리 관리 장치(MMU)와 운영 체제의 메모리 매핑 기능을 통해 물리 주소로 변환된다.
현대의 멀티태스킹 환경에서 응용 프로그램의 프로세스는 일반적으로 자신의 주소 공간 내에 다음과 같은 종류의 메모리 영역을 가진다.
- '''기계어''' 영역:
- 프로그램 자체의 코드 (과거에는 ''코드 세그먼트'' 또는 ''텍스트 세그먼트''라고 불림)
- 공유 라이브러리
- '''데이터''' 영역:
- 초기화된 데이터 (데이터 세그먼트)
- 초기화되지 않은 변수
- 호출 스택 (런타임 스택)
- 힙
- 공유 메모리 및 메모리 맵 파일
주소 공간의 일부 영역은 아무런 물리 메모리에도 매핑되지 않을 수 있다.
참조
[1]
웹사이트
5.10.1. The Memory and Memory Addresses
http://www.cs.ecu.ed[...]
2022-08-20
[2]
서적
IBM System/360 Principles of Operation
http://bitsavers.org[...]
1968-09
[3]
서적
z/Architecture Principles of Operation
https://www.vm.ibm.c[...]
2022-05
[4]
서적
z/Architecture Principles of Operation
https://www.vm.ibm.c[...]
2022-05
[5]
웹사이트
アーカイブされたコピー
http://www.personal.[...]
2013-12-15
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com